1. Field
The present disclosure relates to network communications. More particularly, this invention is directed toward a method and a system for improved load balancing of received network traffic.
2. Description of Related Technology
A communication network comprises a collection of terminal nodes and intermediate nodes, which are interconnected by a transmission medium to enable communication between the terminal nodes. A transmission medium comprises any medium enabling propagation of digital signals, e.g., optical cable, coaxial cable, wireless electromagnetic wave, and other media known to a person of ordinary skill in the art. In digital packet-switched communication networks, the data is transmitted over the network between the terminal nodes in a form of packets. A logical communication channel over a network is made up of multiple packets that are related. These related packets are all part of a unique flow and all packets for the unique flow must be processed in order. However, the transmission medium is not dedicated to a logical communication channel; consequently, a sequence of packets transmitted over the transmission medium may comprise a plurality of packet flows, with packets from different unique flows being interspersed with one another. Therefore, the different unique packet flows must be separated.
A solution known to a person of ordinary skill in the art comprises a Receive Side Scaling (RSS) also known as a Receive Flow Steering (RFS). The RSS attempts to discriminate among the different unique packet flows, assigns to each discriminated unique packet flow a unique Receive Queue (RQ), and provides the packets from each of the discriminated unique packet flow to one of the Receive Queues (RQ). Consequently, each of the different RQs, may comprise packets from one or more unique packet flows, which can then be assigned to one or more processing elements to allow for parallel processing. A queue is an organization of data into a structure in which entities, i.e., the data comprising a packet, are kept and are retrievable in a definite order.
The RSS achieves the above by extracting fields inside several known networking layers to build a key. A format of the key is controlled by a combination of memory lookups that are tied to the networking port on which a specific packet being processed was received, i.e., port lookup tables, together with information found in the various standardized networking header layers of the specific packet. The port and the information is then processed by an RSS mapping algorithm, i.e., RSS hash function, to select one RQ for the specific packet. The key and the RSS mapping algorithm are selected to insure that all packets in a unique flow are provided to the same RQ, but packets from different unique flows are (ideally) evenly spread among the different RQs.
However, as described supra, the RSS works on standard packet structures, i.e., packet structures with standardized networking layers, i.e., layers of the Open Systems Interconnection (OSI) model, and in particular on layers L2, L3, and L4, the RSS may not discriminate among unique flows, each flow comprising standard packet structures, and is ill equipped to deal with packets comprising new or evolving networking format structure based on the standardized networking layers.
By means of an example, consider two unique flows, each flow comprising standard packet structures, wherein the L4 and L3 layers are identical, and L2 layer differs in source and destination addresses. If the RSS extracts other fields than the source and destination addresses, the keys will be identical for the two unique flows; therefore, the RSS failed to discriminate between these two unique flows. Even when the RSS extracts, among the fields, the source and destination addresses, the keys may still be identical. Consider, by means of an example, that the key is generated by a simple addition of the fields. Thus when the source and destination addresses of the first unique flow is equal to the sum of the source and destination addresses of the second flow, the keys will be identical because the other fields have been stipulated to be the same. The probability of generating identical keys increases with increased traffic.
By means of an example of such a format structure, consider a Virtual Extensible Local area Network (VXLAN) tunneling protocol. As known to a person of ordinary skill in the art, tunneling is a technique by which communications performed using various network protocols are encapsulated using a tunnel protocol. The VXLAN tunneling protocol strips layer L2 from the original packet and encapsulates layers L3 and L4 of the original packet in a new structure with VXLAN's own L2, L3, and L4 layers. When presented to the RSS without stripping the tunnel encapsulated L2, L3, and L4 layers, the RSS works on the VXLAN's L2, L3, and L4 layers, but not on the L3 and L4 layers of the original packet. Consequently, should the encapsulated packets belong to one or more unique packet flows, the unique packet flows will not be separated and spread.
Furthermore, the RSS may fail on non-standard packet structures, i.e., packets not adhering to the OSI layering model. The non-standard packet structure may comprise a packet structure adding a non-standard field to a standard packet structure; a packet structure using a standard field in a non-standard manner.
An example of the former may comprise an information field added in front or in between layers L2, L3, and L4. When a packet with added field is presented to the RSS, the RSS rules are not designed to deal with the added field, and exception handling is called. Since the exception handling is a resource intensive process, it is desirable to minimize exception handling use.
An example of the latter non-standard packet structure may comprise correctly forming a Virtual Local Area Network (VLAN) layer L2, but inserting information not related to the VLAN to the layer L2. When such a packet presented to the RSS, the RSS rules will correctly recognize the VLAN layer L2, but since the information is unrelated to VLAN, the information will be interpreted incorrectly thus the packet will be incorrectly processed, or the RSS will be unable to interpret the information and exception handling is called, with the negative impact on resources as disclosed supra.
Accordingly, there is a need in the art for a method and a system implementing the method providing solution to load balancing of received traffic comprising packets with standard packet structure, packets with new and evolving networking extensions and format structures, and non-standard packet structures, by leveraging existing load balancing processes, as well as providing additional advantages.